/*
 * Shared with network-provider dll Definitions
 */
#pragma once

 // Device name for this driver
#define HWFS_DEVICE_NAME_A "HwFsMiniRdr"
#define HWFS_DEVICE_NAME_U L"HwFsMiniRdr"

// Provider name for this driver
#define HWFS_PROVIDER_NAME_A "Host-Within File System"
#define HWFS_PROVIDER_NAME_U L"Host-Within File System"

#define HWFS_ROOT_NAME L"hwfs"
#define HWFS_ROOTSRV_NAME L"\\\\hwfs"
#define HWFS_ROOTSRV_PATH L"\\\\HwFs\\"

#define HWFS_SRV_NAME L"\\HWFS"
#define HWFS_SRV_NAME_SIZE (sizeof(HWFS_SRV_NAME) - sizeof(WCHAR))

// Keep in sync with inf-file
#define HWFS_SERVICE_NAME L"HwFs"

#define HWFS_ROOTSRV_COMMENT L"Host-Within File System"

// The following constant defines the path in the ob namespace
#define DD_HWFS_FS_DEVICE_NAME_U L"\\Device\\HwFsMiniRdr"

#define HWFS_VOLUME_SERIAL  0xfaceface

#define HWFS_FILESYSTEM_NAME L"HwFs"

#ifndef HWFS_DEVICE_NAME
#define HWFS_DEVICE_NAME

//
//  The Devicename string required to access the device
//  from User-Mode. Clients should use DD_HWFS_FS_DEVICE_NAME_U.
//
//  WARNING The next two strings must be kept in sync. Change one and you must
//  change the other. These strings have been chosen such that they are
//  unlikely to coincide with names of other drivers.
//
#define DD_HWFS_USERMODE_SHADOW_DEV_NAME_U     L"\\??\\HwFsMiniRdrDN"
#define DD_HWFS_USERMODE_DEV_NAME_U            L"\\\\.\\HwFsMiniRdrDN"

//
//  Prefix needed for disk filesystems
//
#define DD_HWFS_MINIRDR_PREFIX                 L"\\;E:"

#endif // HWFS_DEVICE_NAME

//
//  The following are from the ddk include files and cannot be changed
//
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 // from ddk\inc\ntddk.h
#define METHOD_BUFFERED 0
#define FILE_ANY_ACCESS 0


#define IOCTL_HWFS_BASE FILE_DEVICE_NETWORK_FILE_SYSTEM

#define HWFS_CONTROL_CODE(request, method, access) \
                CTL_CODE(IOCTL_HWFS_BASE, request, method, access)

#define IOCTL_CODE_ADDCONN          100
#define IOCTL_CODE_GETCONN          101
#define IOCTL_CODE_DELCONN          102
#define IOCTL_CODE_GETLIST			103

#define IOCTL_HWFS_ADDCONN     HWFS_CONTROL_CODE(IOCTL_CODE_ADDCONN, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_HWFS_GETCONN     HWFS_CONTROL_CODE(IOCTL_CODE_GETCONN, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_HWFS_DELCONN     HWFS_CONTROL_CODE(IOCTL_CODE_DELCONN, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_HWFS_GETLIST     HWFS_CONTROL_CODE(IOCTL_CODE_GETLIST, METHOD_BUFFERED, FILE_ANY_ACCESS)
